// 手动模拟一个类似于express.urlencoded 的中间件，来解析POST提交到服务器的表单数据

//1.导入模块
const express = require('express');
//2.创建服务器
const app = express();
// 导入 express 内置 querystring 模块
const qs = require('querystring')
// 全局注册中间件 -- 自定义中间件 -- 解析表单数据的中间件
app.use((req,res,next) => {
  // 具体的业务逻辑
  // 1.定义一个 str 字符串，专门用来存储客服端发送过来的请求体数据
  let str = ''
  // 2.监听 req 的 data 事件
  req.on('data',(chunk) => {
    str += chunk
  })

  // 3.监听 req 的 end 事件
  req.on('end',() => {
    // 在 str 中存放的是完整的请求体数据
    console.log(str)
    // TODO:把字符串格式的请求体的数据，解析成对象格式
    // 调用 qs.parser() 方法，把查询的字符串解析成为对象
    const body = qs.parse(str)
    console.log(body)
    // 讲解析出来的请求体对象，挂载为 req.body 属性
    req.body = body
    // 最后，一定要调用 next() 函数，执行后续的逻辑
    next()
  })
  
})

app.post('/user',(req,res) => {
  res.send( req.body)
})
//3.开启服务器
app.listen(4399,()=>{
console.log('服务器正在运行中 http://127.0.0.1:4399');
});
